Computer systems often encounter unexpected errors which must be resolved to continue normal functioning of the system. Errors typically encountered range from minor errors that may only affect a single subsystem to major errors that cause a computer system to cease operating. Generally, a computer system may encounter hardware or software errors. For example, a hardware error may be a drive malfunction, while a software error may be a driver misconfiguration or other malfunction that prevents the system from operating properly. Software errors can be encountered in many different types of software, including in the system's operating system (OS). Since the OS is required for the computer system to operate, OS errors can make a computer system unusable.
Computer systems often maintain log files that log activity on the system and which may include a list of errors encountered. The errors are typically listed according to an error name or identifier. A user can obtain more information about the error and potentially determine a remedy by consulting a manual or web page established by the developer of the software indicating the error. The user can then choose an action to remedy the encountered error.
One way for a developer to determine potential system errors is to monitor computer systems using their product and to track errors that users have encountered. This method is an example of a technique known as data mining. A software developer may mine errors encountered by several users. By examining the type of errors and the characteristics of a specific error, the developer can then determine the type and the seriousness of the error and develop a corrective action for it. Further, a series of independently generated errors may indicate a more fundamental problem with a hardware or software system. These data mining techniques are reactionary in nature, and as a result, a remedy may not be available to a user when an error is encountered.
The increasingly complex computer systems and software now being used may generate frequent and numerous system errors. It may become burdensome for a user to locate an error definition and remedy for every error encountered. What is needed is an improved system for error definition and handling.